package com.jctrip.hotel.source.service.wehotel;

import com.jctrip.hotel.source.model.OrderDataResult;
import com.jctrip.hotel.source.model.PriceCheckParam;
import com.jctrip.hotel.source.model.wehotel.req.*;
import com.jctrip.hotel.source.model.wehotel.resq.*;

import java.math.BigDecimal;
import java.util.function.Function;

/**
 * @Author henry
 * @Date 2023/6/6 22:38
 * @Description
 */
public interface WeHotelService {

    String parseHotelId(String innId);

    String parseInnId(String hotelId);

    GetBrandListResult getBrandList(String appId, String key, GetBrandList getBrandList);

    GetHotelIdsResult getHotelIdPage(String appId, String key, GetHotelIds getHotelIds);

    HotelInfoData getHotelInfo(String appId, String key, GetHotelInfo getHotelInfo);

    GetHotelImageResult getHotelImage(String appId, String key, GetHotelImage getHotelImage);

    GetHotelRoomTypeResult getHotelRoomTypeResult(String appId, String key, GetHotelRoomType getHotelRoomType);

    GetHotelRoomStatusResult getHotelRoomStatusResult(String appId, String key, GetHotelRoomStatus getHotelRoomStatus);

    /**
     * 下单前校验使用
     * @param appId
     * @param key
     * @param getHotelRealRoomStatus
     * @return
     * @throws Exception
     */
    GetHotelRoomStatusResult getHotelRealRoomStatusResult(String appId, String key, GetHotelRealRoomStatus getHotelRealRoomStatus) ;

    OrderDataResult postOrder(String appId, String key, PostOrder postOrder, PriceCheckParam priceCheck) ;

    OrderData postOrder2C(String appId, String key, PostOrder postOrder);

    OrderData queryOrder(String appId, String key, QueryOrder queryOrder) ;

    void cancelOrder(String appId, String key, CancelOrder cancelOrder) ;

    QueryOrderResp queryOrderAll(String sourceId, QueryOrder queryOrder) ;
}
